/**
 * Created by josmaguirre on 11/03/2014.
 */
var comparationsDataTable;
var selectedRow;
var option;

$(document).ready(function(){
    showLoader("Espere un momento mientras se obtiene la informacion...");
    callService(getServiceURL("obtener_comparaciones"), {}, obtenerComparacionesSuccess, responseFail);
    $('#add-button').click(function(){
        //Se hace la llamada para obtener los rastreos configurados
        clearModal();
        enableControls();
        callService(getServiceURL("obtener_rastreos_sin_comparaciones"), {}, obtenerRastreosSucces, responseFail);
        option = 'ADD';
    });

    $('#mod-button').click(function(){
        if(comparationsDataTable.row('.selected').data() == null){
            setMessage("#message-container", 'WARN', "#message", 'Debe seleccionar un registro de la tabla');
            return 1;
        }
        //Se hace la llamada para obtener los rastreos configurados
        clearModal();
        acivateModal("#modal-comparations", "Modificar Comparación");
        fillForm();
        disableControls();
        //callService(getServiceURL("obtener_rastreos_sin_comparaciones"), {}, obtenerRastreosSucces, responseFail);
        option = 'MODIFY';
    });

    $('#del-button').click(function(){
        if(comparationsDataTable.row('.selected').data() == null){
            setMessage("#message-container", 'WARN', "#message", 'Debe seleccionar un registro de la tabla');
            return 1;
        }
        var data = comparationsDataTable.row('.selected').data();
        var result = window.confirm('¿Esta seguro que desea eliminar el proceso comparativo para el rastreo ' +  data.rastreo + '?');
        var jsonData;
        if(result){
            jsonData = {
                "comparation" : {
                    "rastreo" : data.rastreo
                }
            };
        }
        callService(getServiceURL("eliminar_comparacion"), jsonData, eliminarComparacionSUccess, responseFail);
    });

    $('#save_button').click(function(){

        switch(option){
            case 'ADD':
                if (parseInt($('#contenido').val()) + parseInt($('#atributos').val()) + parseInt($('#estructura').val()) != 100){
                    $('#modal_message').text("La suma de los valores de atributos, estructura y contenido debe sumar 100");
                    return 1;
                }
                var crawl = $('#crawl_options').val();
                var frecuencia = $('#frecuencia').val();
                var cs = $('#cs').val();
                var contenido = $('#contenido').val();
                var atributos = $('#atributos').val();
                var estructura = $('#estructura').val();

                var jsonData  = {
                    "comparation" : {
                        "rastreo" : crawl,
                        "frecuencia" : frecuencia,
                        "cs" : cs,
                        "contenido": contenido,
                        "atributos": atributos,
                        "estructura": estructura
                    }
                };
                callService(getServiceURL("insertar_comparacion"), jsonData, insertarComparacionesSuccess, responseFail);
                break;;
            case 'MODIFY':
                if (parseInt($('#contenido').val()) + parseInt($('#atributos').val()) + parseInt($('#estructura').val()) != 100){
                    $('#modal_message').text("La suma de los valores de atributos, estructura y contenido debe sumar 100");
                    return 1;
                }
                var crawl = $('#crawl_options').val();
                var frecuencia = $('#frecuencia').val();
                var cs = $('#cs').val();
                var contenido = $('#contenido').val();
                var atributos = $('#atributos').val();
                var estructura = $('#estructura').val();

                var jsonData  = {
                    "comparation" : {
                        "rastreo" : crawl,
                        "frecuencia" : frecuencia,
                        "cs" : cs,
                        "contenido": contenido,
                        "atributos": atributos,
                        "estructura": estructura
                    }
                };
                callService(getServiceURL("modificar_comparacion"), jsonData, modificarComparacionesSuccess, responseFail);
                break;;
        }


    });

    $('#comparations-table tbody').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            comparationsDataTable.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
            selectedRow = $(this);
        }
    } );

    $('#button').click( function () {
        table.row('.selected').remove().draw( false );
    } );
});

function obtenerComparacionesSuccess(responseData){
    hideLoader();
    showElement("#main_comparaciones");
    setMessage("#message-container", responseData.messageCode, "#message", responseData.message);
    var data = [];
    data = responseData.comparations;
    //if (responseData.messageCode){
        try{
            paintTable('#comparations-table', data);
        }catch(error){
            setMessage("#message-container", "ERROR", "#message", "Ha ocurrido un error inesperado. " + error.message);
        }
    //}
}

function paintTable(id, data){
    comparationsDataTable = $(id).DataTable({
        data: transformComparationsData(data),
        columns: [
            {data:'rastreo'},
            {data:'frecuencia'},
            {data:'estado'},
            {data:'fechaUltimoRastreo'},
            {data:'fechaProximoRastreo'},
            {data:'cs'},
            {data:'contenido'},
            {data:'atributos'},
            {data:'estructura'}
        ],
        language: {
            lengthMenu: "Mostando _MENU_ registros por pagina",
            zeroRecords: "No se han encontrado registros",
            info: "Pagina _PAGE_ de _PAGES_",
            infoEmpty: "No se han encontrado registros",
            infoFiltered: "(Filtrando de _MAX_ registros)"
        }
    });
}

function obtenerRastreosSucces(responseData){
    $('#crawl_options').empty();
    for (var i=0; i < responseData.crawlsWithoutComparation.length; i++){
        $('#crawl_options').append(
            '<option>' + responseData.crawlsWithoutComparation[i] +'</option>'
        );
    }

    acivateModal("#modal-comparations", "Agregar Comparación");
}

function insertarComparacionesSuccess(responseData){
    showElement("#main_comparaciones");
    setMessage("#message-container", responseData.messageCode, "#message", responseData.message);
    deactivateModal("#modal-comparations");
    hideElement("#main_comparaciones");
    showLoader("Espere un momento mientras se actualiza la informacion...");
    comparationsDataTable.destroy();
    callService(getServiceURL("obtener_comparaciones"), {}, updateComparacionesSuccess, responseFail);
}

function modificarComparacionesSuccess(responseData){
    showElement("#main_comparaciones");
    setMessage("#message-container", responseData.messageCode, "#message", responseData.message);
    deactivateModal("#modal-comparations");
    hideElement("#main_comparaciones");
    showLoader("Espere un momento mientras se actualiza la informacion...");
    comparationsDataTable.destroy();
    callService(getServiceURL("obtener_comparaciones"), {}, updateComparacionesSuccess, responseFail);
}

function updateComparacionesSuccess(responseData){
    var data = [];
    data = responseData.comparations;
    try{
        paintTable('#comparations-table', data);
    }catch(error){
        setMessage("#message-container", "ERROR", "#message", "Ha ocurrido un error inesperado. " + error.message);
    }
    hideLoader();
    showElement('#main_comparaciones');
}

function responseFail(responseData){
    setMessage("#message-container", "ERROR", "#message", "Ha ocurrido un error inesperado. " + responseData.message);
}

function enableControls(){
    $('#crawl_options').prop('disabled', false);
}

function disableControls(){
    $('#crawl_options').prop('disabled', true);
}

function clearModal(){
    $('#frecuencia').val("");
    $('#atributos').val("");
    $('#contenido').val("");
    $('#estructura').val("");
    $('#cs').val("");
    $('#modal_message').text("");
}

function fillForm(){
    var data = comparationsDataTable.row('.selected').data();
    $('#crawl_options').append('<option>' + data.rastreo + '</option>');
    $('#frecuencia').val(data.frecuencia);
    $('#atributos').val(data.atributos);
    $('#contenido').val(data.contenido);
    $('#estructura').val(data.estructura);
    $('#cs').val(data.cs);
}

function eliminarComparacionSUccess(responseData){
    showElement("#main_comparaciones");
    setMessage("#message-container", responseData.messageCode, "#message", responseData.message);
    hideElement("#main_comparaciones");
    showLoader("Espere un momento mientras se actualiza la informacion...");
    comparationsDataTable.destroy();
    callService(getServiceURL("obtener_comparaciones"), {}, updateComparacionesSuccess, responseFail);
}
